package com.atguigu.gmall.product.service;

import com.atguigu.gmall.model.product.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author 里
 */
public interface ManageService {


    // 获取所有的一级分类数据：
    List<BaseCategory1> getBaseCategory1();

    // 根据一级分类id获取二级分类数据
    List<BaseCategory2> getBaseCategory2(Long category1Id);

    // 根据二级分类id获取三级分类数据
    List<BaseCategory3> getBaseCategory3(Long category2Id);

    //根据分类id获取平台属性集合数据
    List<BaseAttrInfo> getAttrInfoList(Long category1Id, Long category2Id, Long category3Id);

    //保存平台属性数据
    void saveAttrInfo(BaseAttrInfo baseAttrInfo);

    //根据属性id 获取平台属性数据值集合
    List<BaseAttrValue> getAttrValueList(long attrId);

    //根据平台属性id 获取平台属性数据
    BaseAttrInfo getBaseAttrInfo(long attrId);

    //根据分类id获取对应的数据
    IPage getSpuInfoPage(Page spuInfoPage, SpuInfo spuInfo);

    //加载销售属性数据
    List<BaseSaleAttr> getBaseSaleAttrList();

    // 保存spu数据
    void saveSpuInfo(SpuInfo spuInfo);

    // 回显spuImage 列表根据spuId
    List<SpuImage> getSpuImageList(Long spuId);

    // 回显销售属性值集合
    List<SpuSaleAttr> getSpuSaleAttrList(Long spuId);

    //保存skuInfo
    void saveSkuInfo(SkuInfo skuInfo);

    //调用服务层获取分页列表数据
    IPage getSkuInfoPageList(Page<SkuInfo> skuInfoPage);

    //商品上架
    void onSale(Long skuId);

    //商品下架
    void cancelSale(Long skuId);

    //获取sku数据+image数据信息
    SkuInfo getSkuInfo(Long skuId);

    // 获取sku最新价格
    BigDecimal getSkuPrice(Long skuId);

    //通过分类ID获取分类信息
    BaseCategoryView getCategoryView(Long category3Id);

    // 获取销售属性
    List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(Long skuId, Long spuId);

    // 商品切换
    Map getSkuValueIdsMap(Long spuId);

    // 根据spuid获取商品海报
    List<SpuPoster> getSpuPosterBySpuId(Long spuId);

    // 规格与包装
    List<BaseAttrInfo> getAttrList(Long skuId);
}
